import thenFs from 'then-fs'

/* thenFs
    .readFile('./files/11.txt', 'utf8')
    .catch(err => {
        console.error(err); //将catch前置那么后面的代码块还可以继续执行
        //catch 会捕获之前所有的错误
    })
    .then((r1) => {
        console.log(r1);
        return thenFs.readFile('./files/2.txt', 'utf8')
    }).then(r2 => {
        console.log(r2)
        return thenFs.readFile('./files/3.txt', 'utf8')
    }).then(r3 => {
        console.log(r3)

    }); */
/* .catch(err => {
  console.error(err);//将catch放到最后的话只要前面出错就会跳转到最后的catch（）从而使中间的代码不执行
}) ;
*/

/* ----------------- */
// Promise.all()方法
const promiseArr = [
  thenFs.readFile('./files/1.txt', 'utf8'),
  thenFs.readFile('./files/2.txt', 'utf8'),
  thenFs.readFile('./files/3.txt', 'utf8'),
]
Promise.all(promiseArr)
  .then(([r1, r2, r3]) => { //Promise.all会等所有的异步操作全部结束后才会执行下一步的 .then 操作（等待机制）
    console.log(r1, r2, r3); //数组中 Promise 实例的顺序，就是最终结果的顺序
  })
  .catch(err => {
    console.error(err)
  });
//Promise.race()方法
Promise.race(promiseArr)
  .then(res => { //只要任何一个异步操作完成，就立即执行下一步的.then 操作（赛跑机制）。
    console.log('race:' + res);
  })
  .catch(err => {
    console.error(err);
  });